//
//  Person.h
//  08 - IOS9新特性（NUllabity、泛型 __kindof）
//
//  Created by 韩旭 on 16/7/13.
//  Copyright © 2016年 基础. All rights reserved.
//

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject
//nullalbility (只能用在对象类型上、) 是在编译层次上加了一些改动
//nonull 声明的属性, 不能为空 （getter 和 setter方法）
//@property (nonnull, nonatomic, copy) NSString *name;
// __nonnull 在声明属性的类型后加 __nonnull
@property (nonatomic, copy) NSString *__nonnull name;
// nulllable 声明的属性, 是可以为空 （getter 和 setter 方法）
//@property (nullable, nonatomic, copy) NSString *sex;
// __nullable
@property (nonatomic, copy) NSString *__nullable sex;
// null_resettable setter 方法是nullable getter方法是nonnull
// 举例 , UIViewController中的view属性
@property (null_resettable, nonatomic, strong) NSArray *friends;
@property (nonatomic, retain) NSDictionary *dic;

// NS_ASSUME_NONNULL_BEGIN
// NS_ASSUME_NONNULL_END
//一般应有余头文件.h 一般将声明包含起来
// 针对所有属性, 添加nonnull修饰
//不可以这样做
//@property (nonatomic, assign) NSInteger __nonnull /age;
//也就是说除了nullable 和 null_resttable 需要加的修饰, 其他不需要
@end
NS_ASSUME_NONNULL_END
